package com.example.crmweb.service;

import com.example.crmweb.entity.Staff;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.crmweb.lang.Result;

import java.util.List;
import java.util.Optional;
import com.example.crmweb.lang.Result;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author -CRM-
 * @since 2022-03-18
 */
public interface StaffService extends IService<Staff> {
    //根据名字获取当前员工的用户名
    Staff gainName(String StaffName);
    //添加成功之后员工库存进行减一
    Result reserve(String StaffName);
    /**
     * 根据用户名查询员工
     * @param name
     * @return 员工对象
     */
    Optional<Staff> describeByName(String name);

    /**
     * 查询公司所有员工
     * @return
     */
    Optional<List<Staff>> describeStaffList();

    /**
     * 查询该员工的所有下级员工
     * @param id 员工id
     * @return  所有下属id列表
     */
    Optional<List<Integer>> describeChildrenList(Integer id);

    /**
     * 添加员工
     * @param staff
     * @param branchIds
     * @return
     */
    Result createStaff(Staff staff, List<Integer> branchIds);

    /**
     * 修改员工
     * @param staff
     * @return
     */
    Result modifyStaff(Staff staff,List<Integer> branchIds);

    /**
     * 删除员工
     * @param id
     * @return
     */
    Integer deleteStaff(Integer id);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    public Result deleteStaffs(List<Integer> ids);


}
